import matplotlib.pyplot as plt
import numpy as np
from matplotlib.axes import Axes
from matplotlib.figure import Figure
from numpy import random as npr
import numpy.typing as npt
import matplotlib
matplotlib.use("TkAgg")

# fake data
npr.seed(42)
data = npr.lognormal(size=(37,4), mean=1.5, sigma=1.75)
labels = list('ABCD')
font_size=10

fig:Figure
fig, axs = plt.subplots(nrows=2, ncols=3, figsize=(6,6), sharey=True)

axs00:Axes = axs[0,0]
axs00.boxplot(x=data, tick_labels=labels)
axs00.set_title(label='Default', fontsize=font_size)

axs01:Axes = axs[0,1]
axs01.boxplot(x=data, tick_labels=labels, showmeans=True)
axs01.set_title(label='Show means', fontsize=font_size)

axs02:Axes = axs[0,2]
axs02.boxplot(x=data, tick_labels=labels, showmeans=True, meanline=True)
axs02.set_title(label='Show means, meanline', fontsize=font_size)

axs10:Axes = axs[1,0]
axs10.boxplot(x=data, tick_labels=labels, showbox=False, showcaps=False)
tuffle_style = 'Tuffle Style'
axs10.set_title(label=tuffle_style, fontsize=font_size)

axs11:Axes = axs[1,1]
axs11.boxplot(x=data, tick_labels=labels, notch=True, bootstrap=10000)
axs11.set_title(label='Notch', fontsize=font_size)

axs12:Axes = axs[1,2]
axs12.boxplot(x=data, tick_labels=labels, showfliers=False)
axs12.set_title(label='showfliers=False', fontsize=font_size)

for ax in axs.flat:
    ax.set_yscale('log')
    ax.set_yticklabels([])


fig.subplots_adjust(hspace=0.4)
plt.show()